//扩展运算符

// function foo(a, b, c) {
//   console.log(a, b, c);
// }

// let arr = [1, 2, 3]
// foo(arr)

// console.log(...arr);

let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
// Array.prototype.push.apply(arr1, arr2) // 合并数组 es5


arr1.push(...arr2)
console.log(arr1);

let str = 'immoc'
var arr = [...str]
console.log(arr);

// call 方法要巩固下
// rest参数
function foo(x, y, z) {
  console.log(arguments);
  let sum = 0
  Array.from(arguments).forEach(function(item) {
    sum += item
  })
  return sum
}


function foo(...args) {   // ...args  把(1,2) 转换为来一个数组
  console.log(args);
  let sum = 0
  args.forEach(function(item) {
    sum += item
  })
  return sum
}

console.log(foo(1, 2)); // 3
console.log(foo(1, 2, 3)); // 6


function foo(x, ...args) {  // args剩余的
  console.log(x);  // 1
  console.log(args); // 2, 3, 4
}
foo(1, 2, 3)

let [x, ...y] = [1, 2, 3]
console.log(x); // 1
console.log(y); //[ 2, 3]


// 拓展运算符: 把数组或者类数组展开形成用逗号隔开的值、 等号左边
//rest参数 : 把都好隔开的值组合成一个数组     等号右边